<?php
/**
 * 验证在或者不在数组中
 */
class AmongValidator extends AbstractValidator
{	
	/**
	 * 范围数组
	 * @var array
	 */
	public $range;
	/**
	 * 当要验证的值不在数组里面返回true
	 * @var boolean
	 */
	public $not=false;
	/**
	 * 是否严格匹配 
	 * $var boolean
	 */
	public $strict=false;
	/**
	 * 是否允许为空 
	 * @var boolean
	 */
	public $allowEmpty=true;
		
	/**
	 * 验证方法
	 * @param string $label  显示在页面的名称
	 * @param mix $value 要验证的值
	 */	
	public function validate($label,$value){
		if($this->allowEmpty && $this->isEmpty($value))
			return true;
		if(!is_array($this->range)) return 'range必须是数组';
		if($this->not===false && !in_array($value,$this->range,$this->strict))
			return $this->message($label);
		else if($this->not===true && in_array($value,$this->range,$this->strict))
			return $this->messageNot($label);
		return true;		
	}
	/**
	 * 验证失败的信息
	 * @param string $label
	 */
	public function message($label){		
		if($this->language==='cn'){
			return $label.'只能是'.implode(',',$this->range).'的其中之一';
		}		
	}
	public function messageNot($label){		
		if($this->language==='cn'){
			return $label.'不能是'.implode(',',$this->range).'的其中之一';
		}		
	}	
}
